Revision: tla--devo--1.3.1--patch-11
Archive: lord@emf.net--2005
Creator: Thomas Lord <lord@emf.net>
Date: Mon Feb 14 12:03:19 PST 2005
Standard-date: 2005-02-14 20:03:19 GMT
Modified-files: libarch/apply-changeset.c
    libarch/archives.c libarch/changeset-report.c
    libarch/cmd-abrowse.c libarch/commit.c libarch/configs.c
    libarch/inode-sig.c libarch/library-txn.c
    libarch/make-changeset.c libarch/merge-points.c
    libarch/my.c libarch/patch-logs.c
    libarch/proj-tree-lint.c libarch/star-merge.c
    libarch/whats-new.c libawk/associative.c
    libawk/relational.c libawk/relational.h
New-patches: lord@emf.net--2005/tla--devo--1.3.1--patch-11
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--base-0
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-1
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-2
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-3
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-4
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-5
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-6
    lord@emf.net--libawk-exp-2005/tla--table-elt-flow--1.3.1--patch-7
Summary: [on bug libawk-api-bogosities] step 5 of libawk cleanup
Keywords: 

* Step 5: Polish Up Sharing

  [[cartouche
     /Note to Branch Managers:/

     If you are are merging the `libawk' changes into your
     branch step-wise, in order adapt your local changes
     to the `libawk' changes in an incremental way,
     you can merge the changes discussed in this section
     from:

     /Archive:/ `lord@emf.net--2005'

     /Version:/ `tla--devo--1.3.1'

     /Revisions:/ `patch-11'

     You will also need to build with a version of `libhackerlab'
     that includes the changes found in:

     /Archive:/ `lord@emf.net--2005'

     /Version:/ `hackerlab--devo--1.1'

     /Revisions:/ `patch-5 .. patch-10'
  ]]

  With all of the above changes, `libawk' is already string-sharing
  to some extent.   This change increases the amount of string
  sharing going in two ways.


** String Coallescing in `libawk'

  Whenever `libawk' uses `dstr_cmp' to compare to relational table
  entries or associative keys and values it recognizes the condition
  that occurs when the strings compare equal but happen to be stored
  as two distinct copies of the same string data.

  In that case, `libawk' replaces the one with the numerically higher
  value when converted to `(unsigned long)' with the other `t_dstr'.
  Future comparisons between these two field entries (and any other
  sharing the same data) are thus sped up.

** `rel_field' Propogation in `libarch'

  `libarch' has been modified so that the idiom:

  [[tty

        const t_uchar * s;

        s = rel_peek_str (table_a, x, y);

        rel_set_field (table_b, i, j, rel_make_field_str (s));

   ]]


   is replaced by:

  [[tty

        rel_field f;

        f = rel_get_field (table_a, x, y);
        rel_set_field_taking (table_b, i, j, f);
  ]]

